﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace Frame.BaseModel
{
    /// <summary>
    /// 用户公共模型类
    /// </summary>
    public class FUser
    {
        
        #region 变量集合
        /// <summary>
        /// 静态变量定义会话状态中存储的用户对象的键值的名称
        /// </summary>
        const string UserSessionName = "*#m_User";

        /// <summary>
        /// 内部暂存变量
        /// </summary>
        protected bool m_isLogin = false;
        /// <summary>
        /// 当前是否登录用户
        /// </summary>
        public bool IsLogin
        {
            get
            {
                return m_isLogin;
            }
        }
        /// <summary>
        /// 用户名称
        /// </summary>
        public string Name { get; protected set; }

        /// <summary>
        /// 用户ID
        /// </summary>
        public int ID { get; protected set; }

        /// <summary>
        /// 是否管理员
        /// </summary>
        public bool IsAdmin { get; protected set; }

        /// <summary>
        /// 用户类型名称
        /// </summary>
        public string UserTypeName { get; protected set; }
        #endregion
        /// <summary>
        /// 私有构造函数，防止对象 被滥用和复制 （为实现单例模式）
        /// </summary>
        protected FUser()
        {
        }

        /// <summary>
        /// 当前会话中的用户 （当前会话中的唯一用户实例 单例模式）
        /// </summary>
        public static FUser Current
        {
            get
            {
                if (HttpContext.Current.Session[UserSessionName] == null)
                {
                    HttpContext.Current.Session[UserSessionName] = new FUser();
                }
                return (FUser)HttpContext.Current.Session[UserSessionName];
            }
            protected set
            {
                HttpContext.Current.Session[UserSessionName] = value;
            }
        }

        /// <summary>
        /// 校验当前用户是否具有特定编码的权限
        /// </summary>
        /// <param name="ActionID">权限编码</param>
        /// <returns></returns>
        public virtual bool CheckActionAllow(string ActionID)
        {
            if (!this.IsLogin)//当前是否登录用户
            {
                return false;
            }
            else
            {
                if (IsAdmin)//管理员账号，权限全开
                {
                    return true;
                }
                else//其他人员的权限待补充
                {

                    return false;
                }
            }
        }

    }
}
